查看原文
其他

R语言可视化——REmapH(中心热度图)

2016-10-19 小魔方 数据小魔方

今天是REmap系列的最后一篇——REmapH函数。


这个函数的特色是可以做中心辐射的热力图,这种热力图在气象、人口密度、海拔测绘领域有诸多运用,当然也可以上当用在商务场合——特别是跟地理信息有关的数据呈现方面。


library("baidumap")

library("REmap")


?remapH

remapH(data,

      maptype = 'china',

      theme = get_theme("Dark"),

      blurSize = 30,

      color = c('blue', 'cyan', 'lime', 'yellow', 'red'),

      minAlpha = 0.05,

      opacity = 1,

      ...)


data为要传入的数据,数据为三列,第一列为lon(经度),第二列为lat(维度),第三列为prob(密度/概率);

maptype为要绘制的地图类型,可选有:”china”,”world”或中国各省份名字;

theme为绘制的地图主题类型,可由get_theme函数传入;

blurSize为热力效果的泛化范围,可调整热力点中心的扩散程度;

color为热力的渐变颜色;

minAlpha为热力点的展示阈值,对应data中的prob列,作图时各点密度会对比minAlpha,以凸显不同密度所展示的不同热力分布;

opacity为透明度,调整热力图的透明度。



get_theme(theme = "Dark", 

          lineColor = "Random",

          backgroundColor = "#1b1b1b", 

          titleColor = "#fff",

          borderColor = "rgba(100,149,237,1)", 

          regionColor = "#1b1b1b",

          labelShow = T, 

          pointShow = F, 

          pointColor = "gold"

          )


theme为主题,设置该参数后无需设置get_theme里其他参数,可选有”Dark”、”Sky”、”blue”和”none”四种

lineColoe为线条颜色,对应为map图里面迁徙线条的颜色

backgroundColor为图片的背景色,支持16进制颜色输入,也支持rgb()函数和rgba()

titleColor为标题的颜色,设置同上

borderColor为地图中各省、市边界颜色

regionColor为地图中各区域颜色,各省份和市

labelShow为是否展示各省、市名字,设置为True时展示

pointShow为是否展示各省会城市所在点,设置为True时展示

pointColor设置上述点的颜色


接下来首先通过两个案例进行讲解:


options(remap.js.web=T)


这里有一个包含经纬度信息及对应密度的数据集,通过该数据集我们可以看到看到REmapH函数制作热力图的大致效果:


data<- read.csv(file="D:\\R\\map\\MoveChart\\cityvaluetop10.csv",header=T)


数据结构如下:


head(data)

       lon      lat prob

1 114.3948 23.40800 0.85

2 115.3948 24.40800 0.85

3 114.3948 23.40800 0.85

4 113.3948 23.40800 0.85

5 114.7307 27.69586 0.80

6 110.5066 28.69586 0.80


'data.frame': 48 obs. of  3 variables:

 $ lon : num  114 115 114 113 115 ...

 $ lat : num  23.4 24.4 23.4 23.4 27.7 ...

 $ prob: num  0.85 0.85 0.85 0.85 0.8 0.8 0.8 0.8 0.75 0.75 ...



map_out<-remapH(data,

       maptype = 'china',

       theme =get_theme(theme = "Dark"),

       blurSize = 70,

       color = "red",

       minAlpha = 10,

       opacity = 1,

       )

plot(map_out)





接下来制作辽宁省省域热力图数据集:


首先使用mapNames函数获取辽宁省市级行政单位:


city_ln<-mapNames("liaoning") 


[1] "大连市"   "朝阳市"   "丹东市"   "铁岭市"   "沈阳市"   "抚顺市"   "葫芦岛市" "阜新市"   "锦州市"  

[10] "鞍山市"   "本溪市"   "营口市"   "辽阳市"   "盘锦市" 


获取各市级行政单位经纬度信息:


city_list<-get_geo_position(city_ln)


> city_list

        lon      lat     city

1  121.6214 38.91934   大连市

2  120.4573 41.57949   朝阳市

3  124.3626 40.00569   丹东市

4  123.8488 42.29257   铁岭市

5  123.4390 41.81134   沈阳市

6  123.9636 41.88608   抚顺市

7  120.8434 40.71736 葫芦岛市

8  121.6765 42.02798   阜新市

9  121.1336 41.10087   锦州市

10 123.0010 41.11412   鞍山市

11 123.7735 41.29985   本溪市

12 122.2415 40.67256   营口市

13 123.2437 41.27445   辽阳市

14 122.0773 41.12594   盘锦市


生成一列密度数据:


point<-round(runif(14,min=0.3,max=0.95),2)

 [1] 0.89 0.82 0.91 0.87 0.90 0.90 0.85 0.89 0.87 0.94 0.90 0.85 0.88 0.88


合成数据框格式的热力图作图数据:


newdata<-data.frame(city_list[,1:2],point)


        lon      lat point

1  121.6214 38.91934  0.89

2  120.4573 41.57949  0.82

3  124.3626 40.00569  0.91

4  123.8488 42.29257  0.87

5  123.4390 41.81134  0.90

6  123.9636 41.88608  0.90

7  120.8434 40.71736  0.85

8  121.6765 42.02798  0.89

9  121.1336 41.10087  0.87

10 123.0010 41.11412  0.94

11 123.7735 41.29985  0.90

12 122.2415 40.67256  0.85

13 123.2437 41.27445  0.88

14 122.0773 41.12594  0.88



作图函数:


map_out1<-remapH(newdata,

       maptype = "辽宁",

       theme =get_theme(theme = "Dark"),

       blurSize = 70,

       color = "red",

       minAlpha = 10,

       opacity = 1,

       )

plot(map_out1)




因为以上数据集中使用的各市中心城市的密度数据,所以整体密度太过分散,看不出渐变效果,当然密度图的数据记录是不受数量限制的,在有较多数据点呈现密集分布的地方,可以看到非常明显的颜色热度渐变效果。


这里我通过添加一列分类数据,将以上密度图数据进行改造:


newdata$perA<-rep("A",14)

newdata$perB<-rep("B",14)

newdata$perC<-rep("C",14)


使用Reshape2包对数据进行一维转化:


mydata <- melt(newdata, id.vars=c("lon","lat","point"))


        lon      lat point variable value

1  121.6214 38.91934  0.85     perA     A

2  120.4573 41.57949  0.81     perA     A

3  124.3626 40.00569  0.91     perA     A

4  123.8488 42.29257  0.90     perA     A

5  123.4390 41.81134  0.91     perA     A

6  123.9636 41.88608  0.93     perA     A

7  120.8434 40.71736  0.91     perA     A

8  121.6765 42.02798  0.87     perA     A

9  121.1336 41.10087  0.89     perA     A

10 123.0010 41.11412  0.82     perA     A

11 123.7735 41.29985  0.88     perA     A

12 122.2415 40.67256  0.95     perA     A

13 123.2437 41.27445  0.90     perA     A

14 122.0773 41.12594  0.84     perA     A

15 121.6214 38.91934  0.85     perB     B

16 120.4573 41.57949  0.81     perB     B

17 124.3626 40.00569  0.91     perB     B

18 123.8488 42.29257  0.90     perB     B

19 123.4390 41.81134  0.91     perB     B

20 123.9636 41.88608  0.93     perB     B

21 120.8434 40.71736  0.91     perB     B

22 121.6765 42.02798  0.87     perB     B

23 121.1336 41.10087  0.89     perB     B

24 123.0010 41.11412  0.82     perB     B

25 123.7735 41.29985  0.88     perB     B

26 122.2415 40.67256  0.95     perB     B

27 123.2437 41.27445  0.90     perB     B

28 122.0773 41.12594  0.84     perB     B

29 121.6214 38.91934  0.85     perC     C

30 120.4573 41.57949  0.81     perC     C

31 124.3626 40.00569  0.91     perC     C

32 123.8488 42.29257  0.90     perC     C

33 123.4390 41.81134  0.91     perC     C

34 123.9636 41.88608  0.93     perC     C

35 120.8434 40.71736  0.91     perC     C

36 121.6765 42.02798  0.87     perC     C

37 121.1336 41.10087  0.89     perC     C

38 123.0010 41.11412  0.82     perC     C

39 123.7735 41.29985  0.88     perC     C

40 122.2415 40.67256  0.95     perC     C

41 123.2437 41.27445  0.90     perC     C

42 122.0773 41.12594  0.84     perC     C


从新运行图表函数:


map_out2<-remapH(newdata[,1:3],

       maptype = "辽宁",

       theme =get_theme(theme = "Dark"),

       blurSize = 70,

       color = "red",

       minAlpha = 10,

       opacity = 1,

       )

plot(map_out2)




魔方学院QQ群:


QQ群:

微信群:


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存